package com.lovar.gaming.core.enums;

import com.lovar.gaming.core.domain.BaseMessageCode;

/**
 * 系统消息代码
 *
 * @author Champagne9
 * @date 2024/3/8
 */
public enum SysMessageCode implements BaseMessageCode {

    /** 请求成功 */
    REQUEST_SUCCESS("system.common.request.success"),
    /** 请求失败 */
    REQUEST_FAIL("system.common.request.fail"),


    /** 登录成功 */
    LOGIN_SUCCESS("system.auth.login.success"),
    /** 登录失败，请检查账号/密码是否正确 */
    LOGIN_FAILURE("system.auth.login.failure"),
    /** 当前会话已过期，请重新登录 */
    LOGIN_EXPIRE("system.auth.login.expire"),

    ;

    /**
     * 消息代码（对应message.properties中的数据）
     */
    private String messageCode;

    /**
     * 响应子代码，若需要响应时还需要更细粒度的逻辑判断可以使用
     */
    private String subCode;

    /**
     * 变量（会填入到有占位符的消息文本中）
     * 占位符格式 {0} {1} {2}
     */
    private Object[] args;

    SysMessageCode(String messageCode) {
        this.messageCode = messageCode;
    }

    SysMessageCode(String messageCode, String subCode) {
        this.messageCode = messageCode;
        this.subCode = subCode;
    }

    @Override
    public String getMessageCode() {
        return this.messageCode;
    }

    @Override
    public BaseMessageCode args(Object... args) {
        this.args = args;
        return this;
    }

    @Override
    public Object[] getArgs() {
        return this.args;
    }
}
